Kanzi 3.9.10
kanzi::CompositionTargetRenderPass Class Reference

Use the Composition Target Render Pass to set one to four composition targets and render all descendant render passes to the composition targets that the Composition Target Render Pass created. More...

#include <kanzi/core.ui/graphics3d/composition_target_render_pass.hpp>

Inheritance diagram for kanzi::CompositionTargetRenderPass:
[legend]

Classes

struct  CompositionFormatSettings
 Format settings for composition target render pass. More...
 
struct  CompositionSizeSettings
 Size settings for Composition Target Render Pass. More...
 

Public Types

using ConceptClass
 Mipmap Generation Concept class used to implement this class.
 
- Public Types inherited from kanzi::RenderPass
enum  AttachmentState { Detached , Detaching , Attaching , Attached }
 Attachment state for keeping track current status. More...
 
typedef BindingRuntimeContainer::const_iterator BindingRuntimeConstIterator
 Const iterator type for binding runtime container.
 
typedef vector< AbstractBindingRuntimeSharedPtrBindingRuntimeContainer
 Container type for binding runtimes.
 
typedef BindingRuntimeContainer::iterator BindingRuntimeIterator
 Iterator type for binding runtime container.
 
using CameraSettingsPtr
 Camera settings unique pointer type.
 
typedef ChildContainer::const_iterator ChildConstIterator
 Child container iterator type.
 
typedef vector< RenderPassSharedPtrChildContainer
 Container type for children.
 
- Public Types inherited from kanzi::GPUResource
enum  MemoryType { GpuOnly , GpuAndRam , RamOnly }
 Memory upload and RAM preservation strategy for GPU resources. More...
 
- Public Types inherited from kanzi::PropertyObject
typedef PropertyStorageContainer::const_iterator PropertyStorageConstIterator
 
typedef vector< PropertyStoragePtrPropertyStorageContainer
 
typedef PropertyStorageContainer::iterator PropertyStorageIterator
 
typedef intrusive_ptr< AbstractPropertyTypeDescriptor::PropertyStoragePropertyStoragePtr
 
typedef PropertyStorageContainer::reverse_iterator PropertyStorageReverseIterator
 
- Public Types inherited from kanzi::BindingHostConcept
using BindingHostConceptSharedPtr
 Binding host concept shared pointer type.
 
using BindingRuntimeConstIterator
 Const iterator for binding runtimes.
 
using BindingRuntimeContainer
 Container for binding runtimes.
 
using BindingRuntimeIterator
 Iterator for binding runtimes.
 

Public Member Functions

FramebuffergetFramebuffer ()
 Gets the internal framebuffer structure.
 
const FramebuffergetFramebuffer () const
 Gets the internal framebuffer structure (const version).
 
- Public Member Functions inherited from kanzi::MipmapGenerationConceptImpl< RenderPass, CompositionTargetRenderPass >
MaterialSharedPtr getColorMipmapMaterial0 () const
 Gets the value of the ColorMipmapMaterial0Property property.
 
MaterialSharedPtr getColorMipmapMaterial1 () const
 Gets the value of the ColorMipmapMaterial1Property property.
 
MaterialSharedPtr getColorMipmapMaterial2 () const
 Gets the value of the ColorMipmapMaterial2Property property.
 
MaterialSharedPtr getColorMipmapMaterial3 () const
 Gets the value of the ColorMipmapMaterial3Property property.
 
MaterialSharedPtr getCubemapMipmapMaterial () const
 Gets the value of the CubemapMipmapMaterialProperty property.
 
float getCurrentMipmapLevel () const
 Gets the value of the CurrentMipmapLevelProperty property.
 
MaterialSharedPtr getDepthMipmapMaterial () const
 Gets the value of the DepthMipmapMaterialProperty property.
 
TextureSharedPtr getMipmapSourceTexture () const
 Gets the value of the MipmapSourceTextureProperty property.
 
void setColorMipmapMaterial0 (MaterialSharedPtr value)
 Sets the value of the ColorMipmapMaterial0Property property.
 
void setColorMipmapMaterial1 (MaterialSharedPtr value)
 Sets the value of the ColorMipmapMaterial1Property property.
 
void setColorMipmapMaterial2 (MaterialSharedPtr value)
 Sets the value of the ColorMipmapMaterial2Property property.
 
void setColorMipmapMaterial3 (MaterialSharedPtr value)
 Sets the value of the ColorMipmapMaterial3Property property.
 
void setCubemapMipmapMaterial (MaterialSharedPtr value)
 Sets the value of the CubemapMipmapMaterialProperty property.
 
void setCurrentMipmapLevel (float value)
 Sets the value of the CurrentMipmapLevelProperty property.
 
void setDepthMipmapMaterial (MaterialSharedPtr value)
 Sets the value of the DepthMipmapMaterialProperty property.
 
void setMipmapSourceTexture (TextureSharedPtr value)
 Sets the value of the MipmapSourceTextureProperty property.
 
- Public Member Functions inherited from kanzi::RenderPass
void addChild (RenderPassSharedPtr childRenderPass)
 Adds a render pass as the last child of the render pass you set.
 
void attach ()
 Attaches the render pass.
 
void attachRecursive (Node &node)
 Recursively attaches a render pass tree.
 
ChildConstIterator beginChildren () const
 Returns an iterator to the beginning of the container of child render passes.
 
BindingLookupContextPtr createLookupContext (RenderPassSharedPtr templateRoot)
 Creates a lookup context for a given render pass.
 
void detach ()
 Detaches the render pass.
 
void detachRecursive ()
 Recursively detaches a render pass tree.
 
ChildConstIterator endChildren () const
 Returns an iterator to the end of the container of child render passes.
 
string getCamera () const
 Gets the value of the CameraProperty.
 
RenderPassSharedPtr getChild (size_t index)
 Gets a child render pass at the given index.
 
size_t getChildCount () const
 Returns the number of child render passes.
 
size_t getChildIndex (RenderPass &childRenderPass) const
 Gets the index of a child in this render pass.
 
NodegetHostNode () const
 Gets the host node of a render pass.
 
Vector4 getInputViewport () const
 Gets the value of InputViewportAreaProperty.
 
RenderPassgetParent () const
 Gets the parent of a render pass.
 
ScenegetSceneForRenderPass () const
 Gets the scene being rendered by the render pass.
 
RenderPassSharedPtr getTemplateRoot () const
 Gets the template root of this render pass.
 
int getUpdateOffset () const
 Gets the update offset of the Render Pass.
 
int getUpdateRate () const
 Gets the value of UpdateRateProperty.
 
Viewport2DgetViewportForRenderPass () const
 Gets a viewport parent for a render pass.
 
void insertChild (size_t index, RenderPassSharedPtr childRenderPass)
 Adds a render pass as a child render pass at given index of the render pass you set.
 
bool isAttached () const
 Tells if a render pass is attached.
 
bool isAttaching () const
 Tells if a render pass is attaching.
 
bool isDetached () const
 Tells if a render pass is detached.
 
bool isDetaching () const
 Tells if render pass is detaching.
 
bool isEnabled () const
 Gets the value of the EnabledProperty property.
 
ObjectSharedPtr lookupObject (string_view relativePath)
 Lookup for an object from a node.
 
template<typename T >
shared_ptr< TlookupObject (string_view relativePath)
 Lookup a relative object of specific type.
 
void removeAllChildren ()
 Removes all child render passes from a render pass.
 
void removeChild (RenderPass &childRenderPass)
 Removes a child render pass.
 
void removeChild (size_t index)
 Removes a child render pass.
 
void render (Renderer3D &renderer, CompositionStack &compositionStack, const CameraSettings *cameraSettings)
 Recursively render RenderPass and all of its child render passes.
 
void restoreResourcesRecursive ()
 Recursively calls restoreResources for a RenderPass and all its children.
 
void setCamera (string_view value)
 Sets the value of the CameraProperty.
 
void setEnabled (bool value)
 Sets the value of the EnabledProperty.
 
void setHostNode (Node *hostNode)
 Sets the host node of a render pass.
 
void setParent (RenderPass *parent)
 Sets the parent of a render pass.
 
void setTemplateRoot (RenderPassSharedPtr templateRoot)
 Sets the template root for this render pass.
 
void setUpdateRate (int updateRate)
 Sets the value of UpdateRateProperty.
 
void setUpdateRateOffset (int updateOffset)
 Sets the value of UpdateOffsetProperty.
 
 ~RenderPass () override
 Destructor.
 
- Public Member Functions inherited from kanzi::GPUResource
void destroy ()
 Destroys a GPU resource.
 
unsigned int getGPUMemoryUsage () const
 
RenderergetRenderer () const
 
void invalidate ()
 Notify resource that graphics context was lost and all GPU resources are invalid.
 
bool isDeployed () const
 
 ~GPUResource () override
 
- Public Member Functions inherited from kanzi::Resource
virtual unsigned int getCPUMemoryUsage () const
 Function for getting the memory usage of a resource.
 
const string & getName () const
 Gets the resource name.
 
const string & getUrl () const
 Gets the resource URL.
 
bool isKeepAlive () const
 Tells if the resource has keep alive flag set.
 
void reload ()
 
void reloadFromFile (string_view filePath)
 
void reloadFromKzb (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser)
 
void setKeepAlive (bool keepAlive)
 Sets the keep alive flag.
 
void setUrl (string_view url)
 Sets the resource URL.
 
 ~Resource () override
 Destructor.
 
- Public Member Functions inherited from kanzi::Object
AppliedStyleEntrySharedPtr applyObjectStyle (kanzi::StyleSharedPtr style)
 Applies a style to an object.
 
void applyObjectStyles ()
 Apply all styles for an object node.
 
DomaingetDomain () const
 Returns the domain the object belongs to.
 
const MetaclassgetDynamicMetaclass () const override
 Returns the metaclass of the dynamic type of the object.
 
MainLoopSchedulergetMainLoopScheduler () const
 Returns the MainLoopScheduler instance of the associated Domain.
 
detail::MessageDispatcher * getMessageDispatcher () const
 Returns the message dispatcher of the object.
 
ResourceManagergetResourceManager () const
 Returns the resource manager of the object.
 
ScriptingContextSharedPtr getScriptingContext () const
 Gets the scripting context of the object.
 
 Object (Domain *domain)
 
void setScriptingContext (ScriptingContextSharedPtr context)
 Sets the scripting context of the object.
 
void unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry)
 
void unapplyObjectStyles ()
 Unapplies and removes all applied styles.
 
 ~Object () override
 
- Public Member Functions inherited from kanzi::MetaObject
bool isTypeOf (const Metaclass *objectType) const
 Determines if the type of this object is the given type or derived from it.
 
virtual ~MetaObject ()
 
- Public Member Functions inherited from kanzi::PropertyObject
template<typename DataType >
void addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 
template<typename DataType >
void addPropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 Adds a property modifier without notifying handlers.
 
template<typename DataType >
void addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner)
 
template<typename DataType >
void addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner)
 
template<typename DataType >
void addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer)
 
PropertyStorageContainer::iterator beginPropertyStorage ()
 Returns the begin iterator to the internal property storage container.
 
PropertyStorageContainer::const_iterator beginPropertyStorage () const
 Returns the begin iterator to the internal property storage container.
 
void clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag)
 
void copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType)
 Copies local value of single property from another object.
 
void copyLocalValues (const PropertyObject &other)
 Copies all local values from another object.
 
PropertyStorageContainer::iterator endPropertyStorage ()
 Returns the end iterator to the internal property storage container.
 
PropertyStorageContainer::const_iterator endPropertyStorage () const
 Returns the end iterator to the internal property storage container.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getAbstractProperty (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalProperty (const PropertyType< DataType > &propertyType) const
 Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value.
 
template<typename DataType >
optional< typename PropertyType< DataType >::Traits::ReturnType > getOptionalPropertyBase (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getProperty (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property type.
 
template<typename DataType >
PropertyType< DataType >::Traits::ReturnType getPropertyBase (const PropertyType< DataType > &propertyType) const
 Returns the current value of a property disregarding modifiers.
 
template<typename DataType >
size_t getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) const
 Gets number of current notification handlers for given property type.
 
bool hasBaseValue (AbstractPropertyType propertyType) const
 Evaluates whether there are any inputs into the property value, disregarding modifiers.
 
bool hasLocalValue (AbstractPropertyType propertyType) const
 Evaluates whether there is a local value set for the property.
 
bool hasNonClassValue (AbstractPropertyType propertyType) const
 Evaluates whether there is a value of any precedence higher than class default value set for the property.
 
bool hasValue (AbstractPropertyType propertyType) const
 Evaluates whether there are any inputs into the property value.
 
bool isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const
 
 PropertyObject ()
 
void removeKzbProperties ()
 Remove all KZB properties.
 
void removeKzbProperties (flat_set< AbstractPropertyType > *keepProperties)
 Remove all KZB properties that are not included in a given set.
 
template<typename DataType >
void removeLocalPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer)
 
void removeLocalValue (AbstractPropertyType propertyType)
 Removes the local value associated with the property.
 
template<typename DataType >
void removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner)
 
template<typename DataType >
void removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner)
 
template<typename DataType >
void removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer)
 
template<typename DataType >
void setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value)
 
template<typename DataType >
void setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value)
 Sets the local value of a property type.
 
void setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag)
 
KZ_DEPRECATED void validatePropertyModifiers (AbstractPropertyType propertyType)
 Validates property modifiers and notifies handlers.
 
void validatePropertyModifiersAndNotifyHandlers (AbstractPropertyType propertyType)
 Validates property modifiers and notifies handlers.
 
virtual ~PropertyObject ()
 
- Public Member Functions inherited from kanzi::BindingHostConceptImpl< RenderPass >
void addBindingRuntime (AbstractBindingRuntimeSharedPtr entry, shared_ptr< void > owner)
 Adds an already-created binding runtime to this binding host.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding)
 Wrapper for setting a binding with no target.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType, PropertyField field)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType, PropertyField field, PropertyValuePrecedence precedence)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType, PropertyValuePrecedence precedence)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, shared_ptr< RenderPass > templateRoot)
 Sets a binding with no target.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyField field)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyField field, PropertyValuePrecedence precedence)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBinding (AbstractBindingSharedPtr binding, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyValuePrecedence precedence)
 Wrapper for setting a binding.
 
BindingRuntimeHandle setBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner)
 Wrapper for setting a binding with no target.
 
BindingRuntimeHandle setBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, AbstractPropertyType propertyType)
 Wrapper for setting a binding with owner.
 
BindingRuntimeHandle setBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, AbstractPropertyType propertyType, PropertyField field, PropertyValuePrecedence precedence)
 Wrapper for setting a binding with owner.
 
BindingRuntimeHandle setBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, shared_ptr< RenderPass > templateRoot)
 Sets a binding with no target.
 
BindingRuntimeHandle setBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyField field, PropertyValuePrecedence precedence)
 Sets a binding to a certain property.
 
BindingRuntimeHandle setModifierBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType)
 Wrapper for setting a modifier binding.
 
BindingRuntimeHandle setModifierBinding (AbstractBindingSharedPtr binding, AbstractPropertyType propertyType, PropertyField field)
 Wrapper for setting a modifier binding.
 
BindingRuntimeHandle setModifierBinding (AbstractBindingSharedPtr binding, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyField field)
 Wrapper for setting a modifier binding.
 
BindingRuntimeHandle setModifierBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, AbstractPropertyType propertyType)
 Wrapper for setting a modifier binding.
 
BindingRuntimeHandle setModifierBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, AbstractPropertyType propertyType, PropertyField field)
 Wrapper for setting a modifier binding.
 
BindingRuntimeHandle setModifierBindingWithOwner (AbstractBindingSharedPtr binding, shared_ptr< void > owner, shared_ptr< RenderPass > templateRoot, AbstractPropertyType propertyType, PropertyField field)
 Sets a modifier binding.
 
- Public Member Functions inherited from kanzi::BindingHostConcept
BindingRuntimeConstIterator beginBindingRuntimes () const
 Returns an iterator to the beginning of binding runtimes.
 
BindingRuntimeConstIterator endBindingRuntimes () const
 Returns an iterator to the end of binding runtimes.
 
AbstractBindingRuntimeSharedPtr getBindingRuntime (size_t idx)
 Gets binding by index.
 
size_t getBindingRuntimeCount () const
 Gets the number of binding runtimes added to this node.
 
void removeAllBindings ()
 Removes all binding runtimes.
 
void removeBinding (BindingRuntimeHandle &bindingRuntime)
 Removes a binding runtime added earlier.
 
void removeBindingsWithOwner (shared_ptr< void > owner)
 Removes all binding runtimes with the specified owner.
 

Static Public Member Functions

static CompositionTargetRenderPassSharedPtr create (Domain *domain, string_view name)
 Creates a Composition Target Render Pass.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 
- Static Public Member Functions inherited from kanzi::MipmapGenerationConceptImpl< RenderPass, CompositionTargetRenderPass >
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 
- Static Public Member Functions inherited from kanzi::RenderPass
static RenderPassSharedPtr create (Domain *domain, string_view name)
 Create a render pass.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 
- Static Public Member Functions inherited from kanzi::Object
static const MetaclassgetStaticMetaclass ()
 Returns the metaclass of Object class.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 Default implementation that returns empty editor info.
 
- Static Public Member Functions inherited from kanzi::MetaObject
static const MetaclassgetStaticMetaclass ()
 Returns the metaclass of Object class.
 
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 Default implementation that returns empty editor info.
 
- Static Public Member Functions inherited from kanzi::MipmapGenerationConcept
static PropertyTypeEditorInfoSharedPtr makeEditorInfo ()
 

Protected Member Functions

void clearInternalResources ()
 Clear internal resources that Kanzi created when executing this render pass.
 
 CompositionTargetRenderPass (Domain *domain, string_view name)
 Constructor.
 
void destroyOverride () override
 GPUResource::destroyOverride() implementation.
 
CompositionRequirements getCompositionRequirements () override
 RenderPass::getCompositionRequirements() implementation.
 
CompositionFormatSettings getRequestedCompositionSettings (GraphicsFormat colorFormat, GraphicsFormat depthTextureFormat, GraphicsFormat depthRenderbufferFormat, const CompositionSizeSettings &sizeSettings) const
 Gets the composition settings based on properties.
 
CompositionFormatSettings getRequestedCompositionSettings (Texture &compositionTarget, const CompositionSizeSettings &sizeSettings, optional< GraphicsFormat > colorFormat) const
 Gets the composition settings based on explicitly set composition target.
 
void invalidateOverride () override
 GPUResource::invalidateOverride() implementation.
 
bool isDeployedOverride () const override
 GPUResource::isDeployedOverride() implementation.
 
void onDetached () override
 RenderPass::onDetached() implementation.
 
void onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) override
 Object::onPropertyChanged() implementation.
 
void renderMipmaps (BrushRenderer &mipmapRenderer, TextureSharedPtr texture)
 Renders mipmaps for the given texture using a material.
 
void renderOverride (Renderer3D &renderer, CompositionStack &compositionStack, const CameraSettings *cameraSettings) override
 RenderPass::renderOverride() implementation.
 
void resolveCompositionResults (Renderer3D &renderer, CompositionStack &compositionStack, const optional< CompositionManager::Target > &drawTarget, CompositionManager::Target &resultTarget, int attachmentIndex)
 Resolves composition targets and sets appropriate properties.
 
void restoreResources () override
 RenderPass::restoreResources() implementation.
 
void updateComposition (optional< CompositionManager::Target > &drawTarget, optional< CompositionManager::Target > &resultTarget, Renderer3D &renderer, TextureSharedPtr colorTarget, const CompositionFormatSettings &settings, const CompositionRequirements &requirements)
 Updates the composition targets based on properties and potential existing composition target.
 
void updateComposition (Renderer3D &renderer, Vector2 viewportSize, const CompositionRequirements &childCompositionRequirements)
 Updates all composition settings.
 
- Protected Member Functions inherited from kanzi::MipmapGenerationConceptImpl< RenderPass, CompositionTargetRenderPass >
 MipmapGenerationConceptImpl (Domain *domain, string_view name)
 Constructor.
 
void onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) override
 Object::onPropertyChanged() implementation.
 
- Protected Member Functions inherited from kanzi::RenderPass
CameraacquireCamera (string_view relativePath) const
 Acquires a Camera node based on the value of the Camera property.
 
CompositionRequirements combineChildCompositionRequirements (CompositionRequirements requirements)
 Iterates the children for composition requirements.
 
CompositionRequirements getChildCompositionRequirements ()
 Iterates the children for composition requirements.
 
virtual void onAttached ()
 Called when a render pass becomes attached.
 
void onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) override
 Object::onPropertyChanged() implementation.
 
void renderChildren (Renderer3D &renderer, CompositionStack &compositionStack, const CameraSettings *cameraSettings)
 Render all child render passes of a render pass.
 
virtual void renderChildrenOverride (Renderer3D &renderer, CompositionStack &compositionStack, const CameraSettings *cameraSettings)
 Implementation-dependent rendering of all child render passes of a render pass.
 
 RenderPass (Domain *domain, string_view name)
 Constructor.
 
template<typename T >
void updatePropertyValueSourceAndNotify (AbstractPropertyType propertyType, typename PropertyType< T >::Descriptor::TypedValueSource &valueSource, const T &value)
 Updates the local value of a property in a Draw Objects Render Pass.
 
- Protected Member Functions inherited from kanzi::GPUResource
virtual unsigned int getGPUMemoryUsageOverride () const
 Gets the amount of GPU memory consumed by the resource.
 
 GPUResource (Domain *domain, string_view name="")
 Constructor.
 
- Protected Member Functions inherited from kanzi::Resource
virtual unsigned int getCPUMemoryUsageOverride () const
 
virtual void reloadFromFileOverride (string_view filePath)
 
virtual void reloadFromKzbOverride (KzbFile &kzbFile, ReadOnlyMemoryFile &file, KzbMemoryParser &parser)
 
virtual void reloadOverride ()
 
 Resource (Domain *domain, string_view name)
 Constructor.
 
- Protected Member Functions inherited from kanzi::Object
void initialize ()
 
void onCopy (const Object &other)
 
- Protected Member Functions inherited from kanzi::MetaObject
void initialize ()
 
 MetaObject ()
 
- Protected Member Functions inherited from kanzi::PropertyObject
AbstractPropertyTypeDescriptor::ValueSourceEntryacquireLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor, PropertyStoragePtr &propertyStorage)
 Acquires a local value source entry that is free for the assignment of a value.
 
AbstractPropertyTypeDescriptor::ModifierStorageacquireModifierStorage (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage)
 
AbstractPropertyTypeDescriptor::NotificationStorageacquireNotificationStorage (AbstractPropertyTypeDescriptor &descriptor)
 
PropertyStoragePtr acquirePropertyStorage (AbstractPropertyTypeDescriptor &descriptor)
 
template<typename DataType >
void addPropertyModifierBase (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner, bool notify)
 Adds a property modifier entry to the property modifier stack and validates them.
 
void addPropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner)
 Internally adds a property value source.
 
void addPropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer)
 Internally adds a property value source.
 
AbstractPropertyTypeDescriptor::ValueSourceEntryconstructLocalValueSourceEntry (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::PropertyStorage &propertyStorage)
 
PropertyStoragePtr constructPropertyStorage (AbstractPropertyTypeDescriptor &descriptor)
 
void copyLocalValue (const AbstractPropertyTypeDescriptor::PropertyStorage &otherPropertyStorage)
 Copy local value from property storage.
 
AbstractPropertyTypeDescriptor::ModifierStoragefindModifierStorage (AbstractPropertyTypeDescriptor &descriptor)
 
AbstractPropertyTypeDescriptor::NotificationStoragefindNotificationStorage (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::PropertyStoragefindPropertyStorage (AbstractPropertyTypeDescriptor &descriptor) const
 Gets the property storage for given property type descriptor.
 
PropertyStoragePtr findPropertyStoragePtr (AbstractPropertyTypeDescriptor &descriptor) const
 Gets property storage intrusive pointer which you can use to hold a reference until the end of the operation.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByNameAndDataType (string_view name, PropertyDataType dataType) const
 Finds a property type descriptor by name and data type.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByQualifiedNameAndDataType (string_view qualifiedName, PropertyDataType dataType) const
 Like findPropertyTypeDescriptorByNameAndDataType, but only searches by matching with qualified names.
 
AbstractPropertyTypeDescriptorfindPropertyTypeDescriptorByUnqualifiedNameAndDataType (string_view unqualifiedName, PropertyDataType dataType) const
 Like findPropertyTypeDescriptorByNameAndDataType, but only searches by matching with unqualified names.
 
AbstractPropertyTypeDescriptor::ValueSourcegetClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetFinalValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetNonClassValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 
AbstractPropertyTypeDescriptor::ValueSourcegetTopValueSource (AbstractPropertyTypeDescriptor &descriptor) const
 Gets the top-level value source for a given property descriptor.
 
virtual void notifyPropertyHandlers (PropertyStoragePtr &storagePtr, PropertyNotificationReason reason)
 Notifies all property handlers on a property storage.
 
void onCopy (const PropertyObject &other)
 
void removeLocalValue (AbstractPropertyTypeDescriptor &descriptor, PropertyStoragePtr &propertyStorage)
 Removes a local value from the given property storage.
 
void removePropertyValueSource (AbstractPropertyTypeDescriptor &descriptor, AbstractPropertyTypeDescriptor::ValueSource *valueSource, void *owner)
 Removes a property value source.
 
void validatePropertyModifiers (PropertyStoragePtr &propertyStorage)
 Validates property modifiers without notifying handlers.
 
void validatePropertyModifiersAndNotifyHandlers (PropertyStoragePtr &propertyStorage)
 Validates property modifiers and notifies handlers.
 
- Protected Member Functions inherited from kanzi::BindingHostConceptImpl< RenderPass >
RenderPassgetThisObject ()
 Internal accessor for the Curiously Recurring Template Pattern.
 
const RenderPassgetThisObject () const
 Internal accessor for the Curiously Recurring Template Pattern.
 
- Protected Member Functions inherited from kanzi::BindingHostConcept
void attachBindings ()
 Attach all bindings stored in this object.
 
void detachBindings ()
 Detach bindings.
 

Static Protected Member Functions

static void sampleCountWarningCheck (const RenderPass &renderPass, const CompositionManager::Target &target, unsigned int requestedSamples)
 Issues a warning if the sample count does not match the requested value.
 
static bool updateMultisampleDrawTarget (optional< CompositionManager::Target > &drawTarget, CompositionManager &compositionManager, const CompositionFormatSettings &settings, const CompositionRequirements &requirements)
 Updates temporary multisample draw target allocated.
 
static bool updateResultTarget (optional< CompositionManager::Target > &resultTarget, CompositionManager &compositionManager, const CompositionFormatSettings &settings, const CompositionRequirements &requirements)
 Updates persistent result target allocated.
 

Protected Attributes

optional< Sampler::AddressingModem_cachedAddressingMode
 Cached addressing mode to avoid property access each frame.
 
CompositionRequirements m_cachedCompositionRequirements
 Cached child composition requirements.
 
optional< GraphicsCompareFunctionm_cachedDepthCompareFunction
 Cached depth compare function to avoid property access each frame.
 
optional< GraphicsFormatm_cachedDepthRenderbufferFormat
 Cached depth renderbuffer format to avoid property access each frame.
 
optional< GraphicsFormatm_cachedDepthTextureFormat
 Cached depth texture format to avoid property access each frame.
 
optional< Sampler::Filterm_cachedFilterMode
 Cached filter mode to avoid property access each frame.
 
optional< intm_cachedHeight
 Cached width to avoid property access each frame.
 
optional< Sampler::MipmapModem_cachedMipmapMode
 Cached mipmap mode to avoid property access each frame.
 
optional< MultisampleCountm_cachedMultisampleLevel
 Cached multisample level to avoid property access each frame.
 
array< optional< GraphicsFormat >, 4um_cachedPixelFormat
 Cached pixel formats to avoid property access each frame.
 
unsigned int m_cachedResolutionDivisor
 Cached resolution divisor to avoid property access each frame.
 
unsigned int m_cachedResolutionMultiplier
 Cached resolution multiplier to avoid property access each frame.
 
Vector2 m_cachedViewportSize
 Cached viewport size.
 
optional< intm_cachedWidth
 Cached width to avoid property access each frame.
 
unsigned int m_compositionHeight
 Composition height used that will be resolved into composition target.
 
array< TextureSharedPtr, 4um_compositionTarget
 Cached composition targets assigned from outside the object.
 
unsigned int m_compositionWidth
 Composition width used that will be resolved into composition target.
 
TextureSharedPtr m_depthTarget
 Cached depth target assigned from outside the object.
 
Framebuffer m_framebuffer
 Framebuffer for maintaining multiple render targets.
 
array< optional< CompositionManager::Target >, 4um_multisampleDrawTarget
 Composition targets used for rendering if multisampling is enabled.
 
array< optional< CompositionManager::Target >, 4um_resultTarget
 Composition targets used for rendering or used as multisample resolve targets if multisampling is enabled.
 
bool m_updateRequired
 Update is an expensive operation. Only perform it if any of the properties change.
 
- Protected Attributes inherited from kanzi::MipmapGenerationConceptImpl< RenderPass, CompositionTargetRenderPass >
unique_ptr< MipmapRenderData > m_mipmapRenderData
 
- Protected Attributes inherited from kanzi::RenderPass
AttachmentState m_attachmentState
 Render pass attachment state.
 
ChildContainer m_children
 Child render passes.
 
bool m_enabled
 Render pass enabled state.
 
uint64_t m_frameNumber
 Current frame number used for update rate control.
 
Nodem_hostNode
 Pointer to host node this render pass is attached under.
 
PropertyType< Vector4 >::Descriptor::TypedValueSource m_inputViewportAreaValueSource
 Value source for the input viewport area property.
 
RenderPassm_parent
 Pointer to parent render pass.
 
weak_ptr< RenderPassm_templateRoot
 Weak pointer to template root object of this render pass.
 
uint64_t m_updateOffset
 Current update rate offset property value cached.
 
uint64_t m_updateRate
 Current update rate property value cached.
 
- Protected Attributes inherited from kanzi::Object
AppliedStyleContainer m_appliedStyles
 Listing of applied styles applied to this object.
 
- Protected Attributes inherited from kanzi::BindingHostConcept
BindingRuntimeContainer m_bindingRuntimes
 Bindings in this object.
 

Properties

static PropertyType< ResourceSharedPtrCompositionTarget0Property
 Sets the target that you want to use as the first color render target of this render pass.
 
static PropertyType< ResourceSharedPtrCompositionTarget1Property
 Sets the target that you want to use as the second color render target of this render pass.
 
static PropertyType< ResourceSharedPtrCompositionTarget2Property
 Sets the target that you want to use as the third color render target of this render pass.
 
static PropertyType< ResourceSharedPtrCompositionTarget3Property
 Sets the target that you want to use as the fourth color render target of this render pass.
 
static PropertyType< ResourceSharedPtrDepthTargetProperty
 Sets the target to which you want to render the depth render target of this render pass.
 
static PropertyType< ResourceSharedPtrResultTexture0Property
 When Kanzi executes this render pass, it sets the value of the Result Texture 0 property to the first composition target.
 
static PropertyType< ResourceSharedPtrResultTexture1Property
 When Kanzi executes this render pass, it sets the value of the Result Texture 1 property to the second composition target.
 
static PropertyType< ResourceSharedPtrResultTexture2Property
 When Kanzi executes this render pass, it sets the value of the Result Texture 2 property to the third composition target.
 
static PropertyType< ResourceSharedPtrResultTexture3Property
 When Kanzi executes this render pass, it sets the value of the Result Texture 3 property to the fourth composition target.
 
static PropertyType< ResourceSharedPtrResultDepthTextureProperty
 Gets the depth texture to which this Composition Target Render Pass renders its content.
 
static PropertyType< intResolutionMultiplierProperty
 Sets the value with which you want to multiply the resolution of the automatically created composition target textures.
 
static PropertyType< intWidthProperty
 Sets the absolute width of the automatically created composition target textures.
 
static PropertyType< intHeightProperty
 Sets the absolute height of the automatically created composition target textures.
 
static PropertyType< intResolutionDivisorProperty
 Sets the value with which you want to divide the resolution of the automatically created composition target textures.
 
static PropertyType< GraphicsFormatPixelFormat0Property
 Sets on the GPU the target pixel format of the first automatically created composition target texture.
 
static PropertyType< GraphicsFormatPixelFormat1Property
 Sets on the GPU the target pixel format of the second automatically created composition target texture.
 
static PropertyType< GraphicsFormatPixelFormat2Property
 Sets on the GPU the target pixel format of the third automatically created composition target texture.
 
static PropertyType< GraphicsFormatPixelFormat3Property
 Sets on the GPU the target pixel format of the fourth automatically created composition target texture.
 
static PropertyType< GraphicsFormatDepthTextureFormatProperty
 Sets the format of the automatically created depth composition target.
 
static PropertyType< GraphicsFormatDepthRenderbufferFormatProperty
 Sets the graphics format of the depth renderbuffers.
 
static PropertyType< Sampler::AddressingModeAddressingModeProperty
 Sets how Kanzi handles the texture coordinates of the automatically generated composition target textures outside of the [0, 0] - [1, 1] rectangle:
 
static PropertyType< Sampler::FilterFilterModeProperty
 Sets how Kanzi samples texels when using the composition target as a texture:
 
static PropertyType< Sampler::MipmapModeMipmapModeProperty
 Sets how Kanzi generates mipmaps for the automatically generated composition target texture:
 
static PropertyType< MultisampleCountMultisampleLevelProperty
 Sets the number of samples to use for each output pixel of the automatically generated composition target textures.
 
static PropertyType< boolResolveImmediatelyProperty
 Indicates whether the Composition Target Render Pass resolves multisampling and generates mipmaps immediately after rendering, instead of delaying the resolve operations until the result composition target is referenced.
 
static PropertyType< GraphicsCompareFunctionDepthCompareFunctionProperty
 Sets the function that you want to use when comparing depth values with comparison samplers.
 
TextureSharedPtr getCompositionTarget0 () const
 Gets the value of the CompositionTarget0Property property.
 
void setCompositionTarget0 (TextureSharedPtr value)
 Sets the value of the CompositionTarget0Property property.
 
TextureSharedPtr getCompositionTarget1 () const
 Gets the value of the CompositionTarget1Property property.
 
void setCompositionTarget1 (TextureSharedPtr value)
 Sets the value of the CompositionTarget1Property property.
 
TextureSharedPtr getCompositionTarget2 () const
 Gets the value of the CompositionTarget2Property property.
 
void setCompositionTarget2 (TextureSharedPtr value)
 Sets the value of the CompositionTarget2Property property.
 
TextureSharedPtr getCompositionTarget3 () const
 Gets the value of the CompositionTarget3Property property.
 
void setCompositionTarget3 (TextureSharedPtr value)
 Sets the value of the CompositionTarget3Property property.
 
TextureSharedPtr getDepthTarget () const
 Gets the value of the DepthTargetProperty property.
 
void setDepthTarget (TextureSharedPtr value)
 Sets the value of the DepthTargetProperty property.
 
TextureSharedPtr getResultTexture0 () const
 Gets the value of the ResultTexture0Property property.
 
void setResultTexture0 (TextureSharedPtr value)
 Sets the value of the ResultTexture0Property property.
 
TextureSharedPtr getResultDepthTexture () const
 Gets the value of the ResultDepthTextureProperty property.
 
void setResultDepthTexture (TextureSharedPtr value)
 Sets the value of the ResultDepthTextureProperty property.
 
int getResolutionMultiplier () const
 Gets the value of the ResolutionMultiplierProperty property.
 
void setResolutionMultiplier (int value)
 Sets the value of the ResolutionMultiplierProperty property.
 
int getWidth () const
 Gets the value of the WidthProperty property.
 
void setWidth (int value)
 Sets the value of the WidthProperty property.
 
int getHeight () const
 Gets the value of the HeightProperty property.
 
void setHeight (int value)
 Sets the value of the HeightProperty property.
 
int getResolutionDivisor () const
 Gets the value of the ResolutionDivisorProperty property.
 
void setResolutionDivisor (int value)
 Sets the value of the ResolutionDivisorProperty property.
 
GraphicsFormat getPixelFormat0 () const
 Gets the value of the PixelFormat0Property property.
 
void setPixelFormat0 (GraphicsFormat value)
 Sets the value of the the PixelFormat0Property property.
 
GraphicsFormat getPixelFormat1 () const
 Gets the value of the PixelFormat1Property property.
 
void setPixelFormat1 (GraphicsFormat value)
 Sets the value of the the PixelFormat1Property property.
 
GraphicsFormat getPixelFormat2 () const
 Gets the value of the PixelFormat2Property property.
 
void setPixelFormat2 (GraphicsFormat value)
 Sets the value of the the PixelFormat2Property property.
 
GraphicsFormat getPixelFormat3 () const
 Gets the value of the PixelFormat3Property property.
 
void setPixelFormat3 (GraphicsFormat value)
 Sets the value of the the PixelFormat3Property property.
 
GraphicsFormat getDepthTextureFormat () const
 Gets the value of the DepthTextureFormatProperty.
 
void setDepthTextureFormat (GraphicsFormat value)
 Sets the value of the DepthTextureFormatProperty.
 
GraphicsFormat getDepthRenderBufferFormat () const
 Gets the value of the DepthRenderbufferFormatProperty.
 
void setDepthRenderBufferFormat (GraphicsFormat value)
 Sets the value of the DepthRenderbufferFormatProperty.
 
Sampler::Filter getFilterMode () const
 Gets the value of the FilterModeProperty.
 
void setFilterMode (Sampler::Filter value)
 Sets the value of the FilterModeProperty.
 
Sampler::MipmapMode getMipmapMode () const
 Gets the value of the MipmapModeProperty.
 
void setMipmapMode (Sampler::MipmapMode value)
 Sets the value of the MipmapModeProperty.
 
MultisampleCount getMultisampleLevel () const
 Gets the value of the MultisampleLevelProperty.
 
void setMultisampleLevel (MultisampleCount value)
 Sets the value of the MultisampleLevelProperty.
 
bool isResolveImmediately () const
 Gets the value of the ResolveImmediatelyProperty.
 
void setResolveImmediately (bool value)
 Sets the value of the ResolveImmediatelyProperty.
 
GraphicsCompareFunction getDepthCompareFunction () const
 Gets the value of DepthCompareFunctionProperty.
 
void setDepthCompareFunction (GraphicsCompareFunction value)
 Sets the value of the DepthCompareFunctionProperty.
 

Additional Inherited Members

- Static Public Attributes inherited from kanzi::RenderPass
static PropertyType< string > CameraProperty
 Sets the Camera node that you want this render pass to use to render content.
 
static PropertyType< boolEnabledProperty
 Use the Enabled property to turn render passes and render pass trees on or off.
 
static PropertyType< Vector4InputViewportAreaProperty
 Reports the size of the Viewport 2D that uses this render pass.
 
static PropertyType< intUpdateOffsetProperty
 Sets the offset to add to the frame count when calculating the update rate of the Render Pass.
 
static PropertyType< intUpdateRateProperty
 Sets the rate at which to render the Render Pass.
 
- Static Public Attributes inherited from kanzi::MipmapGenerationConcept
static PropertyType< ResourceSharedPtrColorMipmapMaterial0Property
 Sets the material to use to generate the mipmaps for the first color result texture (Result Texture 0) of a CompositionTargetRenderPass.
 
static PropertyType< ResourceSharedPtrColorMipmapMaterial1Property
 Sets the material to use to generate the mipmaps for the second color result texture (Result Texture 1) of a CompositionTargetRenderPass.
 
static PropertyType< ResourceSharedPtrColorMipmapMaterial2Property
 Sets the material to use to generate the mipmaps for the third color result texture (Result Texture 2) of a CompositionTargetRenderPass.
 
static PropertyType< ResourceSharedPtrColorMipmapMaterial3Property
 Sets the material to use to generate the mipmaps for the fourth color result texture (Result Texture 3) of a CompositionTargetRenderPass.
 
static PropertyType< ResourceSharedPtrCubemapMipmapMaterialProperty
 Sets the material to use to generate the mipmaps for the Result Texture of a CubeMapRenderPass.
 
static PropertyType< floatCurrentMipmapLevelProperty
 Reports the mipmap level that Kanzi is generating.
 
static PropertyType< ResourceSharedPtrDepthMipmapMaterialProperty
 Sets the material to use to generate the mipmaps for the Result Depth Texture of a CompositionTargetRenderPass.
 
static PropertyType< ResourceSharedPtrMipmapSourceTextureProperty
 Reports the texture that contains the render target texture for which Kanzi creates mipmaps.
 
- Protected Types inherited from kanzi::Object
typedef vector< AppliedStyleEntrySharedPtrAppliedStyleContainer
 Applied style container.
 

Detailed Description

Use the Composition Target Render Pass to set one to four composition targets and render all descendant render passes to the composition targets that the Composition Target Render Pass created.

If you set multiple composition targets, rendering can write to all specified buffers at the same time. See Using multiple composition targets. After Kanzi renders the descendant render passes of a Composition Target Render Pass, the Composition Target Render Pass restores the earlier composition settings.

Configuring the composition target

Composition Target Render Pass by default creates one composition target whose size is the same as the size of the current Viewport 2D node using the RGBA pixel format and depth buffer. To configure the composition target, you can:

  • Set the pixel format of the composition target with the PixelFormat0Property property.
    // Set the first Pixel Format property to RGB (without alpha).
    compositionTargetRenderPass->setPixelFormat0(GraphicsFormatR8G8B8_UNORM);
  • Set the size of the composition target in relation to the size of the current Viewport 2D node with the ResolutionMultiplierProperty and ResolutionDivisorProperty properties. These properties set a fractional number (rational number) which Kanzi uses to multiply the size of the current Viewport 2D node.
    // Use 2/3 of the size of the Viewport 2D area.
    compositionTargetRenderPass->setResolutionMultiplier(2);
    compositionTargetRenderPass->setResolutionDivisor(3);
  • Set the absolute size of the composition target with the WidthProperty and HeightProperty. This overrides the resolution that you set with the ResolutionMultiplierProperty and ResolutionDivisorProperty.
  • Set the filtering mode of the composition target with the FilterModeProperty and MipmapModeProperty.
  • Set the addressing mode of the composition target with the AddressingModeProperty.
  • Set the number of samples for each pixel or disable multisampling with the MultisampleLevelProperty.

Using custom render target textures

You can set a Composition Target Render Pass to use a composition target texture that you create somewhere else with the CompositionTarget0Property property. The render pass for which you set the composition target texture with this property does not create its own render target.

// Create a render target texture.
Texture::CreateInfoNode2DRenderTarget createInfo(1280, 720, GraphicsFormatR8G8B8A8_UNORM);
TextureSharedPtr compositionTarget = Texture::create(domain, createInfo, "Composition Target");
// Assign a composition target to the Composition Target Render Pass.
compositionTargetRenderPass->setCompositionTarget0(compositionTarget);

For example, to use a custom render target texture, bind the CompositionTarget0Property property of a Composition Target Render Pass to properties of other render passes. Use the DepthTargetProperty to set the depth texture.

To set a Composition Target Render Pass to render to multiple render target textures, use these properties to set each render target texture:

When you use the result target properties from other CompositionTargetRenderPass render passes to render incrementally into the targets, set the ResolveImmediatelyProperty to false in the original CompositionTargetRenderPass.

The size settings of the explicitly defined composition targets must match. If you do not explicitly define some of the composition targets, the size of the explicitly defined composition targets must match the size that Kanzi automatically calculates for the viewport. Kanzi discards all composition targets with mismatches in their sizes and instead creates a composition target automatically.

Accessing the composition target result

To access the result of a Composition Target Render Pass:

// Access the composition target result.
TextureSharedPtr resultCompositionTarget = compositionTargetRenderPass->getResultTexture0();

The texture that the getResultTexture0() function returns is not necessarily the texture that a Composition Target Render Pass rendered, or the texture set to the CompositionTarget0Property. For example, if you use multisampling, the getResultTexture0() function returns the target, where it resolves multiple samples into a 2D texture.

If a Composition Target Render Pass was not executed, the result of the getResultTexture0() function is undefined.

To use the result textures of a Composition Target Render Pass in another render pass, create bindings to these properties:

For example, in a Blit Render Pass you can bind the BlitRenderPass::Texture0Property to the ResultTexture0Property of a Composition Target Render Pass, the BlitRenderPass::Texture1Property to the ResultTexture1Property, and so on.

You can use the result texture properties to access the result textures of both the explicitly defined composition targets and the composition targets generated automatically by the Composition Target Render Pass.

To avoid needlessly updating the bindings that read these properties, Kanzi updates the values of these properties only when the associated composition targets change or disappear.

Use the ResolveImmediatelyProperty to set whether to resolve multisamples and generate mipmaps for the composition targets immediately after rendering. By default the Composition Render Target Render Pass resolves multisamples and generates mipmaps immediately, but if you use some or all of the composition targets for further rendering elsewhere, you can set the value of this property to false. This way you delay the resolve operations until the result composition target is referenced.

Using multiple composition targets

You can set a Composition Target Render Pass to render to up to 4 composition targets at the same time. To control the pixel format of a composition target, set its pixel format property:

The Pixel Format property with the highest index sets the number of composition targets that Kanzi creates for a Composition Target Render Pass. If you do not set some of the Pixel Format properties, those properties get their value from a Pixel Format property with a higher index whose value is set. For example, if you set the values of the PixelFormat0Property and PixelFormat2Property, Kanzi creates three composition targets and:

To set the same pixel format for all composition targets, you can set the corresponding highest-index pixel format property and remove the other pixel format properties.

Use the DepthTextureFormatProperty to set the format for a depth texture. When you do not set the DepthTextureFormatProperty, but the rendering settings require depth testing to render the child render passes, Kanzi automatically creates a depth renderbuffer. When you set the DepthTextureFormatProperty, Kanzi creates a depth texture that you can access with the ResultDepthTextureProperty.

To create a Composition Target Render Pass with multiple output textures:

// Create a render pass template.
RenderPassTemplateSharedPtr mrt = RenderPassTemplate::create(CompositionTargetRenderPass::getStaticMetaclass()->getName(), "mrt");
// Enable 3 color buffers, all using RGBA32 format.
mrt->addPropertyValue(CompositionTargetRenderPass::PixelFormat2Property, Variant(GraphicsFormatR8G8B8A8_UNORM));
// Enable depth texture using 24-bit depth.
mrt->addPropertyValue(CompositionTargetRenderPass::DepthTextureFormatProperty, Variant(GraphicsFormatD24_UNORM));

To use the result textures from a Composition Target Render Pass in a Blit Render Pass:

// Create a blit render pass template
RenderPassTemplateSharedPtr blit = RenderPassTemplate::create(BlitRenderPass::getStaticMetaclass()->getName(), "blit");
// Bind the result color textures from MRT pass "mrt" into the textures in blit render pass.
blit->addBinding(BindingLoadInfo(Binding::create("../mrt", CompositionTargetRenderPass::ResultTexture0Property), BlitRenderPass::Texture0Property));
blit->addBinding(BindingLoadInfo(Binding::create("../mrt", CompositionTargetRenderPass::ResultTexture1Property), BlitRenderPass::Texture1Property));
blit->addBinding(BindingLoadInfo(Binding::create("../mrt", CompositionTargetRenderPass::ResultTexture2Property), BlitRenderPass::Texture2Property));
// Bind the result depth texture from MRT pass "mrt" into a texture in blit render pass.
blit->addBinding(BindingLoadInfo(Binding::create("../mrt", CompositionTargetRenderPass::ResultDepthTextureProperty), BlitRenderPass::Texture3Property));

Examples

To use a Composition Target Render Pass with a custom render target with automatic size:

// This example shows how to create a Texture and use it as a render target for a 2D node.
//
// Kanzi determines the size of the render target automatically from the size of the 2D node
// and renders the node:
// - To texture as specified with Node2D::setRenderTarget().
// - Only to texture as specified with Node2D::setOffscreenRendering().
//
// \see Node2D::RenderTargetProperty
// \see Node2D::OffscreenRenderingProperty
// \see Texture::CreateInfoNode2DRenderTarget
// \see Texture::create()
// Create a node tree.
ScreenSharedPtr screen = Screen::create(domain, "screen");
screen->attach();
// Create a node.
// Set a size to the node to determine the size that Kanzi uses to set the size of the render target.
EmptyNode2DSharedPtr node = EmptyNode2D::create(domain, "node");
node->setWidth(static_cast<float>(width));
node->setHeight(static_cast<float>(height));
screen->addChild(node);
// Create a background brush for the node.
ColorBrushSharedPtr brush = ColorBrush::create(domain, "brush", ColorRGBA(0.4f, 0.4f, 0.9f, 1.0f));
node->setBackgroundBrush(brush);
// Create a render target texture for the node.
// To create a texture with the same size as the node to which you assign it, set width divisor and height divisor to 1.
Texture::CreateInfoNode2DRenderTarget textureCreateInfo(1, 1, GraphicsFormatR8G8B8A8_UNORM);
textureCreateInfo.widthDivisor = 1;
textureCreateInfo.heightDivisor = 1;
TextureSharedPtr renderTarget = Texture::create(domain, textureCreateInfo, "texture");
node->setRenderTarget(renderTarget);
// Render only to render target texture.
node->setOffscreenRendering(true);
// Render the node tree.
{
CompositionStack& compositionStack = renderer->getCompositionStack();
screen->setAllocatedSize(Vector2(static_cast<float>(width), static_cast<float>(height)));
screen->setArrangeTransform(Matrix3x3());
screen->layout();
compositionStack.pushComposition(0, screen->getAllocatedSize());
screen->render(*renderer, compositionStack);
compositionStack.popComposition();
}
screen->detach();

Member Typedef Documentation

◆ ConceptClass

Mipmap Generation Concept class used to implement this class.

Constructor & Destructor Documentation

◆ CompositionTargetRenderPass()

kanzi::CompositionTargetRenderPass::CompositionTargetRenderPass ( Domain * domain,
string_view name )
explicitprotected

Constructor.

Parameters
domainThe domain to use.
nameThe name of the Composition Target Render Pass.

Member Function Documentation

◆ getCompositionTarget0()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getCompositionTarget0 ( ) const
inline

Gets the value of the CompositionTarget0Property property.

Returns
The value of the Composition Target 0 property.
See also
setCompositionTarget0()
Since
Kanzi 3.9.0

◆ setCompositionTarget0()

void kanzi::CompositionTargetRenderPass::setCompositionTarget0 ( TextureSharedPtr value)
inline

Sets the value of the CompositionTarget0Property property.

Parameters
valueThe new value of the Composition Target 0 property.
See also
getCompositionTarget0()
Since
Kanzi 3.9.0

◆ getCompositionTarget1()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getCompositionTarget1 ( ) const
inline

Gets the value of the CompositionTarget1Property property.

Returns
The value of the Composition Target 1 property.
See also
setCompositionTarget1()
Since
Kanzi 3.9.0

◆ setCompositionTarget1()

void kanzi::CompositionTargetRenderPass::setCompositionTarget1 ( TextureSharedPtr value)
inline

Sets the value of the CompositionTarget1Property property.

Parameters
valueThe new value of the Composition Target 1 property.
See also
getCompositionTarget1()
Since
Kanzi 3.9.0

◆ getCompositionTarget2()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getCompositionTarget2 ( ) const
inline

Gets the value of the CompositionTarget2Property property.

Returns
The value of the Composition Target 2 property.
See also
setCompositionTarget2()
Since
Kanzi 3.9.0

◆ setCompositionTarget2()

void kanzi::CompositionTargetRenderPass::setCompositionTarget2 ( TextureSharedPtr value)
inline

Sets the value of the CompositionTarget2Property property.

Parameters
valueThe new value of the Composition Target 2 property.
See also
getCompositionTarget2()
Since
Kanzi 3.9.0

◆ getCompositionTarget3()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getCompositionTarget3 ( ) const
inline

Gets the value of the CompositionTarget3Property property.

Returns
The value of the Composition Target 3 property.
See also
setCompositionTarget3()
Since
Kanzi 3.9.0

◆ setCompositionTarget3()

void kanzi::CompositionTargetRenderPass::setCompositionTarget3 ( TextureSharedPtr value)
inline

Sets the value of the CompositionTarget3Property property.

Parameters
valueThe new value of the Composition Target 3 property.
See also
getCompositionTarget3()
Since
Kanzi 3.9.0

◆ getDepthTarget()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getDepthTarget ( ) const
inline

Gets the value of the DepthTargetProperty property.

Returns
The value of the Depth Target property.
See also
setDepthTarget()
Since
Kanzi 3.9.10

◆ setDepthTarget()

void kanzi::CompositionTargetRenderPass::setDepthTarget ( TextureSharedPtr value)
inline

Sets the value of the DepthTargetProperty property.

Parameters
valueThe new value of the Depth Target property.
See also
getDepthTarget()
Since
Kanzi 3.9.10

◆ getResultTexture0()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getResultTexture0 ( ) const
inline

Gets the value of the ResultTexture0Property property.

Returns
The value of the Result Texture 0 property.
See also
setResultTexture0()
Since
Kanzi 3.9.0

◆ setResultTexture0()

void kanzi::CompositionTargetRenderPass::setResultTexture0 ( TextureSharedPtr value)
inline

Sets the value of the ResultTexture0Property property.

Parameters
valueThe new value of the Result Texture 0 property.
See also
getResultTexture0()
Since
Kanzi 3.9.0

◆ getResultDepthTexture()

TextureSharedPtr kanzi::CompositionTargetRenderPass::getResultDepthTexture ( ) const
inline

Gets the value of the ResultDepthTextureProperty property.

Returns
The value of the Result Depth Texture property.
See also
setResultDepthTexture()

◆ setResultDepthTexture()

void kanzi::CompositionTargetRenderPass::setResultDepthTexture ( TextureSharedPtr value)
inline

Sets the value of the ResultDepthTextureProperty property.

Parameters
valueThe new value of the Result Depth Texture property.
See also
getResultDepthTexture()

◆ getResolutionMultiplier()

int kanzi::CompositionTargetRenderPass::getResolutionMultiplier ( ) const
inline

Gets the value of the ResolutionMultiplierProperty property.

Returns
The value of the Resolution Multiplier property.
See also
setResolutionMultiplier()

◆ setResolutionMultiplier()

void kanzi::CompositionTargetRenderPass::setResolutionMultiplier ( int value)
inline

Sets the value of the ResolutionMultiplierProperty property.

Parameters
valueThe new value of the Resolution Multiplier property.
See also
getResolutionMultiplier()

◆ getWidth()

int kanzi::CompositionTargetRenderPass::getWidth ( ) const
inline

Gets the value of the WidthProperty property.

Returns
The value of the Width property.

◆ setWidth()

void kanzi::CompositionTargetRenderPass::setWidth ( int value)
inline

Sets the value of the WidthProperty property.

Parameters
valueThe new value of the Width property.

◆ getHeight()

int kanzi::CompositionTargetRenderPass::getHeight ( ) const
inline

Gets the value of the HeightProperty property.

Returns
The value of the Width property.

◆ setHeight()

void kanzi::CompositionTargetRenderPass::setHeight ( int value)
inline

Sets the value of the HeightProperty property.

Parameters
valueThe new value of the Width property.

◆ getResolutionDivisor()

int kanzi::CompositionTargetRenderPass::getResolutionDivisor ( ) const
inline

Gets the value of the ResolutionDivisorProperty property.

Returns
The value of the Resolution Divisor property.
See also
setResolutionDivisor

◆ setResolutionDivisor()

void kanzi::CompositionTargetRenderPass::setResolutionDivisor ( int value)
inline

Sets the value of the ResolutionDivisorProperty property.

Parameters
valueThe new value of the Resolution Divisor property.
See also
getResolutionDivisor

◆ getPixelFormat0()

GraphicsFormat kanzi::CompositionTargetRenderPass::getPixelFormat0 ( ) const
inline

Gets the value of the PixelFormat0Property property.

Returns
The value of the Pixel Format 0 property.
See also
setPixelFormat0()
Since
Kanzi 3.9.0

◆ setPixelFormat0()

void kanzi::CompositionTargetRenderPass::setPixelFormat0 ( GraphicsFormat value)
inline

Sets the value of the the PixelFormat0Property property.

Parameters
valueThe new value of the Pixel Format 0 property.
See also
getPixelFormat0()
Since
Kanzi 3.9.0

◆ getPixelFormat1()

GraphicsFormat kanzi::CompositionTargetRenderPass::getPixelFormat1 ( ) const
inline

Gets the value of the PixelFormat1Property property.

Returns
The value of the Pixel Format 1 property.
See also
setPixelFormat1()
Since
Kanzi 3.9.0

◆ setPixelFormat1()

void kanzi::CompositionTargetRenderPass::setPixelFormat1 ( GraphicsFormat value)
inline

Sets the value of the the PixelFormat1Property property.

Parameters
valueThe new value of the Pixel Format 1 property.
See also
getPixelFormat1()
Since
Kanzi 3.9.0

◆ getPixelFormat2()

GraphicsFormat kanzi::CompositionTargetRenderPass::getPixelFormat2 ( ) const
inline

Gets the value of the PixelFormat2Property property.

Returns
The value of the Pixel Format 2 property.
See also
setPixelFormat2()
Since
Kanzi 3.9.0

◆ setPixelFormat2()

void kanzi::CompositionTargetRenderPass::setPixelFormat2 ( GraphicsFormat value)
inline

Sets the value of the the PixelFormat2Property property.

Parameters
valueThe new value of the Pixel Format 2 property.
See also
getPixelFormat2()
Since
Kanzi 3.9.0

◆ getPixelFormat3()

GraphicsFormat kanzi::CompositionTargetRenderPass::getPixelFormat3 ( ) const
inline

Gets the value of the PixelFormat3Property property.

Returns
The value of the Pixel Format 3 property.
See also
setPixelFormat3()
Since
Kanzi 3.9.0

◆ setPixelFormat3()

void kanzi::CompositionTargetRenderPass::setPixelFormat3 ( GraphicsFormat value)
inline

Sets the value of the the PixelFormat3Property property.

Parameters
valueThe new value of the Pixel Format 3 property.
See also
getPixelFormat3()
Since
Kanzi 3.9.0

◆ getDepthTextureFormat()

GraphicsFormat kanzi::CompositionTargetRenderPass::getDepthTextureFormat ( ) const
inline

Gets the value of the DepthTextureFormatProperty.

Returns
The value of the Depth Texture Format property.

◆ setDepthTextureFormat()

void kanzi::CompositionTargetRenderPass::setDepthTextureFormat ( GraphicsFormat value)
inline

Sets the value of the DepthTextureFormatProperty.

Parameters
valueThe new value of the Depth Texture Format property.

◆ getDepthRenderBufferFormat()

GraphicsFormat kanzi::CompositionTargetRenderPass::getDepthRenderBufferFormat ( ) const
inline

Gets the value of the DepthRenderbufferFormatProperty.

Returns
The depth renderbuffer format.

◆ setDepthRenderBufferFormat()

void kanzi::CompositionTargetRenderPass::setDepthRenderBufferFormat ( GraphicsFormat value)
inline

Sets the value of the DepthRenderbufferFormatProperty.

Parameters
valueThe depth renderbuffer format.

◆ getFilterMode()

Sampler::Filter kanzi::CompositionTargetRenderPass::getFilterMode ( ) const
inline

Gets the value of the FilterModeProperty.

Returns
The value of the Filter Mode property.

◆ setFilterMode()

void kanzi::CompositionTargetRenderPass::setFilterMode ( Sampler::Filter value)
inline

Sets the value of the FilterModeProperty.

Parameters
valueThe new value of the Filter Mode property.

◆ getMipmapMode()

Sampler::MipmapMode kanzi::CompositionTargetRenderPass::getMipmapMode ( ) const
inline

Gets the value of the MipmapModeProperty.

Returns
The value of the Mipmap Mode property.

◆ setMipmapMode()

void kanzi::CompositionTargetRenderPass::setMipmapMode ( Sampler::MipmapMode value)
inline

Sets the value of the MipmapModeProperty.

Parameters
valueThe new value of the Mipmap Mode property.

◆ getMultisampleLevel()

MultisampleCount kanzi::CompositionTargetRenderPass::getMultisampleLevel ( ) const
inline

Gets the value of the MultisampleLevelProperty.

Returns
The new value of the Multisample Level property.

◆ setMultisampleLevel()

void kanzi::CompositionTargetRenderPass::setMultisampleLevel ( MultisampleCount value)
inline

Sets the value of the MultisampleLevelProperty.

Parameters
valueThe new value of the Multisample Level property.

◆ isResolveImmediately()

bool kanzi::CompositionTargetRenderPass::isResolveImmediately ( ) const
inline

Gets the value of the ResolveImmediatelyProperty.

Returns
If the Composition Target Render Pass resolves multisampling and generates mipmaps immediately after rendering, true. If the Composition Target Render Pass delays the resolve operations until the result composition target is referenced, false.

◆ setResolveImmediately()

void kanzi::CompositionTargetRenderPass::setResolveImmediately ( bool value)
inline

Sets the value of the ResolveImmediatelyProperty.

Parameters
valueThe new value of the Resolve Immediately property.

◆ getDepthCompareFunction()

GraphicsCompareFunction kanzi::CompositionTargetRenderPass::getDepthCompareFunction ( ) const
inline

Gets the value of DepthCompareFunctionProperty.

Returns
The value of the Depth Compare Function property.

◆ setDepthCompareFunction()

void kanzi::CompositionTargetRenderPass::setDepthCompareFunction ( GraphicsCompareFunction value)
inline

Sets the value of the DepthCompareFunctionProperty.

Parameters
valueThe value of the Depth Compare Function property.

◆ makeEditorInfo()

static PropertyTypeEditorInfoSharedPtr kanzi::CompositionTargetRenderPass::makeEditorInfo ( )
static

◆ create()

static CompositionTargetRenderPassSharedPtr kanzi::CompositionTargetRenderPass::create ( Domain * domain,
string_view name )
static

Creates a Composition Target Render Pass.

Parameters
domainThe domain to use.
nameThe name of the Composition Target Render Pass.
Returns
The created Composition Target Render Pass.

◆ getFramebuffer() [1/2]

Framebuffer * kanzi::CompositionTargetRenderPass::getFramebuffer ( )
inline

Gets the internal framebuffer structure.

This function is intended for use in test, the framebuffer should not be modified by user.

Returns
Framebuffer.

◆ getFramebuffer() [2/2]

const Framebuffer * kanzi::CompositionTargetRenderPass::getFramebuffer ( ) const
inline

Gets the internal framebuffer structure (const version).

This function is intended for use in test, the framebuffer should not be modified by user.

Returns
Framebuffer.

◆ renderOverride()

void kanzi::CompositionTargetRenderPass::renderOverride ( Renderer3D & renderer,
CompositionStack & compositionStack,
const CameraSettings * cameraSettings )
overrideprotectedvirtual

RenderPass::renderOverride() implementation.

Reimplemented from kanzi::RenderPass.

◆ getCompositionRequirements()

CompositionRequirements kanzi::CompositionTargetRenderPass::getCompositionRequirements ( )
overrideprotectedvirtual

RenderPass::getCompositionRequirements() implementation.

Reimplemented from kanzi::RenderPass.

◆ onPropertyChanged()

void kanzi::CompositionTargetRenderPass::onPropertyChanged ( AbstractPropertyType propertyType,
PropertyNotificationReason reason )
overrideprotectedvirtual

Object::onPropertyChanged() implementation.

Reimplemented from kanzi::PropertyObject.

◆ onDetached()

void kanzi::CompositionTargetRenderPass::onDetached ( )
overrideprotectedvirtual

RenderPass::onDetached() implementation.

Reimplemented from kanzi::RenderPass.

◆ restoreResources()

void kanzi::CompositionTargetRenderPass::restoreResources ( )
overrideprotectedvirtual

RenderPass::restoreResources() implementation.

Reimplemented from kanzi::RenderPass.

◆ getRequestedCompositionSettings() [1/2]

CompositionFormatSettings kanzi::CompositionTargetRenderPass::getRequestedCompositionSettings ( Texture & compositionTarget,
const CompositionSizeSettings & sizeSettings,
optional< GraphicsFormat > colorFormat ) const
protected

Gets the composition settings based on explicitly set composition target.

Parameters
compositionTargetExisting composition target.
sizeSettingsComposition size settings.
colorFormatPixel format value for potential automatic composition target.
Returns
Size of the composition target.

◆ getRequestedCompositionSettings() [2/2]

CompositionFormatSettings kanzi::CompositionTargetRenderPass::getRequestedCompositionSettings ( GraphicsFormat colorFormat,
GraphicsFormat depthTextureFormat,
GraphicsFormat depthRenderbufferFormat,
const CompositionSizeSettings & sizeSettings ) const
protected

Gets the composition settings based on properties.

Parameters
colorFormatRequested color format.
depthTextureFormatRequested depth texture format.
depthRenderbufferFormatRequested depth renderbuffer format.
sizeSettingsComposition size settings.
Returns
Size of the composition target.

◆ updateMultisampleDrawTarget()

static bool kanzi::CompositionTargetRenderPass::updateMultisampleDrawTarget ( optional< CompositionManager::Target > & drawTarget,
CompositionManager & compositionManager,
const CompositionFormatSettings & settings,
const CompositionRequirements & requirements )
staticprotected

Updates temporary multisample draw target allocated.

Parameters
drawTargetDraw target being updated.
compositionManagerComposition Manager to use.
settingsFormat settings.
requirementsChild composition requirements.
Returns
True if the target was recreated, false if the existing target could be reused.

◆ updateResultTarget()

static bool kanzi::CompositionTargetRenderPass::updateResultTarget ( optional< CompositionManager::Target > & resultTarget,
CompositionManager & compositionManager,
const CompositionFormatSettings & settings,
const CompositionRequirements & requirements )
staticprotected

Updates persistent result target allocated.

Parameters
resultTargetResult target being updated.
compositionManagerComposition Manager to use.
settingsFormat settings.
requirementsChild composition requirements.
Returns
True if the target was recreated, false if the existing target could be reused.

◆ sampleCountWarningCheck()

static void kanzi::CompositionTargetRenderPass::sampleCountWarningCheck ( const RenderPass & renderPass,
const CompositionManager::Target & target,
unsigned int requestedSamples )
staticprotected

Issues a warning if the sample count does not match the requested value.

Parameters
renderPassRender pass creating a composition target.
targetDraw target being updated.
requestedSamplesSample count that was requested.

◆ updateComposition() [1/2]

void kanzi::CompositionTargetRenderPass::updateComposition ( optional< CompositionManager::Target > & drawTarget,
optional< CompositionManager::Target > & resultTarget,
Renderer3D & renderer,
TextureSharedPtr colorTarget,
const CompositionFormatSettings & settings,
const CompositionRequirements & requirements )
protected

Updates the composition targets based on properties and potential existing composition target.

Parameters
drawTargetThe draw target to update.
resultTargetThe result target to update.
rendererRenderer.
colorTargetUser-set color target from properties.
settingsFormat settings.
requirementsChild composition requirements.

◆ updateComposition() [2/2]

void kanzi::CompositionTargetRenderPass::updateComposition ( Renderer3D & renderer,
Vector2 viewportSize,
const CompositionRequirements & childCompositionRequirements )
protected

Updates all composition settings.

Parameters
rendererRenderer to use.
viewportSizeViewport size from composition stack.
childCompositionRequirementsComposition requirements passed from children.

◆ resolveCompositionResults()

void kanzi::CompositionTargetRenderPass::resolveCompositionResults ( Renderer3D & renderer,
CompositionStack & compositionStack,
const optional< CompositionManager::Target > & drawTarget,
CompositionManager::Target & resultTarget,
int attachmentIndex )
protected

Resolves composition targets and sets appropriate properties.

Parameters
rendererRenderer to use.
compositionStackComposition stack to use.
drawTargetThe draw target to update.
resultTargetThe result target to update.
attachmentIndexAttachment index of the result target.
Since
Kanzi 3.9.10 added attachmentIndex parameter.

◆ clearInternalResources()

void kanzi::CompositionTargetRenderPass::clearInternalResources ( )
protected

Clear internal resources that Kanzi created when executing this render pass.

Also clears result properties. Executed internally when CompositionTargetRenderPass becomes detached.

◆ isDeployedOverride()

bool kanzi::CompositionTargetRenderPass::isDeployedOverride ( ) const
overrideprotectedvirtual

GPUResource::isDeployedOverride() implementation.

Reimplemented from kanzi::RenderPass.

◆ invalidateOverride()

void kanzi::CompositionTargetRenderPass::invalidateOverride ( )
overrideprotectedvirtual

GPUResource::invalidateOverride() implementation.

Reimplemented from kanzi::GPUResource.

◆ destroyOverride()

void kanzi::CompositionTargetRenderPass::destroyOverride ( )
overrideprotectedvirtual

GPUResource::destroyOverride() implementation.

Reimplemented from kanzi::GPUResource.

◆ renderMipmaps()

void kanzi::CompositionTargetRenderPass::renderMipmaps ( BrushRenderer & mipmapRenderer,
TextureSharedPtr texture )
protected

Renders mipmaps for the given texture using a material.

Kanzi calls this function when you call resolveCompositionResults().

Parameters
mipmapRendererBrush renderer to use for rendering the mipmaps.
textureTexture to render mipmaps for. Must not be null.

Member Data Documentation

◆ CompositionTarget0Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::CompositionTarget0Property
static

Sets the target that you want to use as the first color render target of this render pass.

The default value is ResourceSharedPtr().

See also
setCompositionTarget0(), getCompositionTarget0()

◆ CompositionTarget1Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::CompositionTarget1Property
static

Sets the target that you want to use as the second color render target of this render pass.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ CompositionTarget2Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::CompositionTarget2Property
static

Sets the target that you want to use as the third color render target of this render pass.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ CompositionTarget3Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::CompositionTarget3Property
static

Sets the target that you want to use as the fourth color render target of this render pass.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ DepthTargetProperty

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::DepthTargetProperty
static

Sets the target to which you want to render the depth render target of this render pass.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ ResultTexture0Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::ResultTexture0Property
static

When Kanzi executes this render pass, it sets the value of the Result Texture 0 property to the first composition target.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ ResultTexture1Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::ResultTexture1Property
static

When Kanzi executes this render pass, it sets the value of the Result Texture 1 property to the second composition target.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ ResultTexture2Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::ResultTexture2Property
static

When Kanzi executes this render pass, it sets the value of the Result Texture 2 property to the third composition target.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ ResultTexture3Property

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::ResultTexture3Property
static

When Kanzi executes this render pass, it sets the value of the Result Texture 3 property to the fourth composition target.

The default value is ResourceSharedPtr().

Since
Kanzi 3.9.0

◆ ResultDepthTextureProperty

PropertyType<ResourceSharedPtr> kanzi::CompositionTargetRenderPass::ResultDepthTextureProperty
static

Gets the depth texture to which this Composition Target Render Pass renders its content.

The default value is ResourceSharedPtr().

See also
setResultDepthTexture(), getResultDepthTexture()

◆ ResolutionMultiplierProperty

PropertyType<int> kanzi::CompositionTargetRenderPass::ResolutionMultiplierProperty
static

Sets the value with which you want to multiply the resolution of the automatically created composition target textures.

This property, together with the ResolutionDivisorProperty property, sets the size of the composition target in relation to the size of the current Viewport2D node. The default value is 1.

See also
getResolutionMultiplier(), getResolutionMultiplier(), ResolutionDivisorProperty

◆ WidthProperty

PropertyType<int> kanzi::CompositionTargetRenderPass::WidthProperty
static

Sets the absolute width of the automatically created composition target textures.

If you do not set this property, Kanzi takes the width of the composition target from the current size of the composition stack using ResolutionMultiplierProperty and ResolutionDivisorProperty.

◆ HeightProperty

PropertyType<int> kanzi::CompositionTargetRenderPass::HeightProperty
static

Sets the absolute height of the automatically created composition target textures.

If you do not set this property, Kanzi takes the height of the composition target from the current size of the composition stack using ResolutionMultiplierProperty and ResolutionDivisorProperty.

◆ ResolutionDivisorProperty

PropertyType<int> kanzi::CompositionTargetRenderPass::ResolutionDivisorProperty
static

Sets the value with which you want to divide the resolution of the automatically created composition target textures.

This property, together with the ResolutionMultiplierProperty property, sets the size of the composition target in relation to the size of the current Viewport2D node. The default value is 1.

See also
setResolutionDivisor(), getResolutionDivisor(), ResolutionMultiplierProperty

◆ PixelFormat0Property

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::PixelFormat0Property
static

Sets on the GPU the target pixel format of the first automatically created composition target texture.

The default value is RGBA.

See also
getPixelFormat0(), setPixelFormat0()

◆ PixelFormat1Property

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::PixelFormat1Property
static

Sets on the GPU the target pixel format of the second automatically created composition target texture.

The default value is RGBA.

◆ PixelFormat2Property

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::PixelFormat2Property
static

Sets on the GPU the target pixel format of the third automatically created composition target texture.

The default value is RGBA.

◆ PixelFormat3Property

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::PixelFormat3Property
static

Sets on the GPU the target pixel format of the fourth automatically created composition target texture.

The default value is RGBA.

◆ DepthTextureFormatProperty

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::DepthTextureFormatProperty
static

Sets the format of the automatically created depth composition target.

If you do not set this property, Kanzi uses a depth renderbuffer if needed.

◆ DepthRenderbufferFormatProperty

PropertyType<GraphicsFormat> kanzi::CompositionTargetRenderPass::DepthRenderbufferFormatProperty
static

Sets the graphics format of the depth renderbuffers.

The available formats are:

When you do not set this property, Kanzi sets the depth renderbuffer format automatically to the best available option. In most cases this is the 32-bit float format, which consumes the most memory.

The value of the DepthTextureFormatProperty overrides the value of this property.

◆ AddressingModeProperty

PropertyType<Sampler::AddressingMode> kanzi::CompositionTargetRenderPass::AddressingModeProperty
static

Sets how Kanzi handles the texture coordinates of the automatically generated composition target textures outside of the [0, 0] - [1, 1] rectangle:

◆ FilterModeProperty

PropertyType<Sampler::Filter> kanzi::CompositionTargetRenderPass::FilterModeProperty
static

Sets how Kanzi samples texels when using the composition target as a texture:

◆ MipmapModeProperty

PropertyType<Sampler::MipmapMode> kanzi::CompositionTargetRenderPass::MipmapModeProperty
static

Sets how Kanzi generates mipmaps for the automatically generated composition target texture:

◆ MultisampleLevelProperty

PropertyType<MultisampleCount> kanzi::CompositionTargetRenderPass::MultisampleLevelProperty
static

Sets the number of samples to use for each output pixel of the automatically generated composition target textures.

To disable multisampling, remove the property or set the property value to NoMSAA. The default value is NoMSAA.

Since
Kanzi 3.9.7 changed to enum.

◆ ResolveImmediatelyProperty

PropertyType<bool> kanzi::CompositionTargetRenderPass::ResolveImmediatelyProperty
static

Indicates whether the Composition Target Render Pass resolves multisampling and generates mipmaps immediately after rendering, instead of delaying the resolve operations until the result composition target is referenced.

The default value is false.

◆ DepthCompareFunctionProperty

PropertyType<GraphicsCompareFunction> kanzi::CompositionTargetRenderPass::DepthCompareFunctionProperty
static

Sets the function that you want to use when comparing depth values with comparison samplers.

The default value is kanzi::GraphicsCompareFunctionDisabled.

◆ m_cachedResolutionMultiplier

unsigned int kanzi::CompositionTargetRenderPass::m_cachedResolutionMultiplier
protected

Cached resolution multiplier to avoid property access each frame.

◆ m_cachedResolutionDivisor

unsigned int kanzi::CompositionTargetRenderPass::m_cachedResolutionDivisor
protected

Cached resolution divisor to avoid property access each frame.

◆ m_cachedWidth

optional<int> kanzi::CompositionTargetRenderPass::m_cachedWidth
protected

Cached width to avoid property access each frame.

◆ m_cachedHeight

optional<int> kanzi::CompositionTargetRenderPass::m_cachedHeight
protected

Cached width to avoid property access each frame.

◆ m_cachedPixelFormat

array<optional<GraphicsFormat>, 4u> kanzi::CompositionTargetRenderPass::m_cachedPixelFormat
protected

Cached pixel formats to avoid property access each frame.

◆ m_cachedDepthTextureFormat

optional<GraphicsFormat> kanzi::CompositionTargetRenderPass::m_cachedDepthTextureFormat
protected

Cached depth texture format to avoid property access each frame.

◆ m_cachedDepthRenderbufferFormat

optional<GraphicsFormat> kanzi::CompositionTargetRenderPass::m_cachedDepthRenderbufferFormat
protected

Cached depth renderbuffer format to avoid property access each frame.

◆ m_cachedDepthCompareFunction

optional<GraphicsCompareFunction> kanzi::CompositionTargetRenderPass::m_cachedDepthCompareFunction
protected

Cached depth compare function to avoid property access each frame.

◆ m_cachedAddressingMode

optional<Sampler::AddressingMode> kanzi::CompositionTargetRenderPass::m_cachedAddressingMode
protected

Cached addressing mode to avoid property access each frame.

◆ m_cachedFilterMode

optional<Sampler::Filter> kanzi::CompositionTargetRenderPass::m_cachedFilterMode
protected

Cached filter mode to avoid property access each frame.

◆ m_cachedMipmapMode

optional<Sampler::MipmapMode> kanzi::CompositionTargetRenderPass::m_cachedMipmapMode
protected

Cached mipmap mode to avoid property access each frame.

◆ m_cachedMultisampleLevel

optional<MultisampleCount> kanzi::CompositionTargetRenderPass::m_cachedMultisampleLevel
protected

Cached multisample level to avoid property access each frame.

◆ m_compositionTarget

array<TextureSharedPtr, 4u> kanzi::CompositionTargetRenderPass::m_compositionTarget
protected

Cached composition targets assigned from outside the object.

◆ m_depthTarget

TextureSharedPtr kanzi::CompositionTargetRenderPass::m_depthTarget
protected

Cached depth target assigned from outside the object.

◆ m_cachedViewportSize

Vector2 kanzi::CompositionTargetRenderPass::m_cachedViewportSize
protected

Cached viewport size.

◆ m_cachedCompositionRequirements

CompositionRequirements kanzi::CompositionTargetRenderPass::m_cachedCompositionRequirements
protected

Cached child composition requirements.

Additional source of potential requirement to run update.

◆ m_resultTarget

array<optional<CompositionManager::Target>, 4u> kanzi::CompositionTargetRenderPass::m_resultTarget
protected

Composition targets used for rendering or used as multisample resolve targets if multisampling is enabled.

Kanzi creates this result implicitly if the CompositionTarget1Property, CompositionTarget2Property, and CompositionTarget3Property properties are not set.

◆ m_multisampleDrawTarget

array<optional<CompositionManager::Target>, 4u> kanzi::CompositionTargetRenderPass::m_multisampleDrawTarget
protected

Composition targets used for rendering if multisampling is enabled.

Kanzi acquires this target implicitly if the CompositionTarget1Property, CompositionTarget2Property, and CompositionTarget3Property properties are not set and multisampling is enabled.

◆ m_compositionWidth

unsigned int kanzi::CompositionTargetRenderPass::m_compositionWidth
protected

Composition width used that will be resolved into composition target.

◆ m_compositionHeight

unsigned int kanzi::CompositionTargetRenderPass::m_compositionHeight
protected

Composition height used that will be resolved into composition target.

◆ m_framebuffer

Framebuffer kanzi::CompositionTargetRenderPass::m_framebuffer
protected

Framebuffer for maintaining multiple render targets.

◆ m_updateRequired

bool kanzi::CompositionTargetRenderPass::m_updateRequired
protected

Update is an expensive operation. Only perform it if any of the properties change.


The documentation for this class was generated from the following file: